const moment = require("moment");

/******************** 定义类 ***************************************************************/
/*
    文章类
 */
function Article() {
    this.id = null;
    this.title = ""; // 标题
    this.m_type = ""; // 模块类别
    this.p_type = ""; // 文章主类别
    this.a_type = ""; // 文章子类别
    this.author = ""; // 文章的作者
    this.create_time = ""; // 创建时间
    this.formated_create_time = ""; // 格式化的创建时间
    this.content = ""; // 文章内容
    this.video = []; // 文章视频
    this.status = 0; // 文章状态
    this.click_num=0; // 点击量
    this.is_top=0; // 是否已置顶
}

// 将对象序列化为一个json对象，可以用于http请求或对象复制
Article.prototype.serialize = function() {
    return Object.assign({}, this, {
        content: escape(this.content),
        video_ids: this.video.map(function(elem){return elem.id}).join(",")
    });
}

// 用json数据为对象属性赋值
Article.prototype.parse = function(data) {
    Object.assign(this, data, {
        content: unescape(data.content),
        formated_create_time: moment(parseInt(data.create_time)).format('YYYY-MM-DD HH:mm')
    });
}

// ******************** 类静态属性与方法 **********************************************
// 解析json数据，返回一个对象
Article.parse = function(data) {
    var o = new Article();
    o.parse(data);
    return o;
}

// 解析json数组，返回对象数组
Article.parseList = function(list) {
    var len = list.length;
    var arr = new Array(len);
    for(var i = 0; i < len; i++) {
        arr[i] = Article.parse(list[i]);
    }
    return arr;
}

// ******************** 数据库存储方法 **********************************************
// Admin.prototype.save = function(callback) {
//     var that = this;
//     var action = this.mode == "add" ? "article_add" : "article_modify";
//     api.post(action, this.serialize(), function(res) {
//         that.id = res.id;
//         if(callback) callback();
//     });
// }



// ******************** 导出 **********************************************
export default Article